#pragma once
#include<vector>
#include <algorithm>
#include <string>

using namespace std;

class backtrackSolution
{	
public:
	vector<vector<int>> permute(vector<int>& nums);
	void backtrack(vector<int>& nums, vector<int>& track, vector<bool>& used, vector<vector<int>> &intResult);
    vector<vector<string>> solveNQueens(int n);
    int totalNQueens(int n);
    vector<vector<int>> subsets(vector<int>& nums);
    
    vector<vector<int>> combine(int n, int k);
    vector<vector<int>> subsetsWithDup(vector<int>& nums);
    vector<vector<int>> combinationSum2(vector<int>& candidates, int target);
    
    vector<vector<int>> permuteUnique(vector<int>& nums);
    vector<vector<int>> combinationSum(vector<int>& candidates, int target);
};

